// package语句：声明当前类所在的包
// com.itheima.demo表示这是在示例相关的包中
package com.itheima.demo;

// public是访问修饰符，表示这个类可以被任何地方访问
// class关键字用于定义一个类
// Movie是类名，表示这是一个电影类，用于表示电影对象
public class Movie {
    // private是访问修饰符，表示这个成员变量只能在当前类内部访问（封装的体现）
    // int是数据类型，表示整数
    // id是成员变量名，用于存储电影的编号
    private int id; // 编号
    
    // private修饰，表示这个成员变量只能在当前类内部访问
    // String是数据类型，表示字符串
    // name是成员变量名，用于存储电影的名称
    private String name;
    
    // private修饰，表示这个成员变量只能在当前类内部访问
    // double是数据类型，表示双精度浮点数（可以表示小数）
    // price是成员变量名，用于存储电影的价格
    private double price;
    
    // private修饰，表示这个成员变量只能在当前类内部访问
    // String是数据类型，表示字符串
    // actor是成员变量名，用于存储电影的演员
    private String actor;

    // public修饰的构造方法
    // 无参数构造方法，方法名与类名相同，没有返回值类型
    // 当使用new Movie()创建对象时，会调用这个构造方法
    // 这个构造方法体为空，但它的存在很重要，确保可以创建空对象
    public Movie() {
    }

    // public修饰的有参数构造方法
    // 构造方法名与类名相同，没有返回值类型
    // 当使用new Movie(参数1, 参数2, 参数3, 参数4)创建对象时，会调用这个构造方法
    // 四个参数分别对应电影的编号、名称、价格和演员
    public Movie(int id, String name, double price, String actor) {
        // this关键字表示当前对象
        // this.id指的是当前对象的id成员变量
        // 右边的id是构造方法的参数
        // 将参数id的值赋值给当前对象的id成员变量
        this.id = id;
        // 将参数name的值赋值给当前对象的name成员变量
        this.name = name;
        // 将参数price的值赋值给当前对象的price成员变量
        this.price = price;
        // 将参数actor的值赋值给当前对象的actor成员变量
        this.actor = actor;
    }

    // public修饰的getter方法
    // 返回类型是int，表示返回整数
    // 方法名是getId，遵循get+属性名（首字母大写）的命名规范
    // 这个方法用于获取id成员变量的值（读操作）
    public int getId() {
        // return关键字表示返回
        // 返回id成员变量的值
        return id;
    }

    // public修饰的setter方法
    // 返回类型是void，表示没有返回值
    // 方法名是setId，遵循set+属性名（首字母大写）的命名规范
    // 参数是int id，表示要设置的id值
    // 这个方法用于设置id成员变量的值（写操作）
    public void setId(int id) {
        // 将参数id的值赋值给当前对象的id成员变量
        this.id = id;
    }

    // public修饰的getter方法
    // 返回类型是String，表示返回字符串
    // 方法名是getName，用于获取name成员变量的值
    public String getName() {
        return name;
    }

    // public修饰的setter方法
    // 返回类型是void，表示没有返回值
    // 方法名是setName，用于设置name成员变量的值
    // 参数是String name，表示要设置的name值
    public void setName(String name) {
        this.name = name;
    }

    // public修饰的getter方法
    // 返回类型是double，表示返回双精度浮点数
    // 方法名是getPrice，用于获取price成员变量的值
    public double getPrice() {
        return price;
    }

    // public修饰的setter方法
    // 返回类型是void，表示没有返回值
    // 方法名是setPrice，用于设置price成员变量的值
    // 参数是double price，表示要设置的price值
    public void setPrice(double price) {
        this.price = price;
    }

    // public修饰的getter方法
    // 返回类型是String，表示返回字符串
    // 方法名是getActor，用于获取actor成员变量的值
    public String getActor() {
        return actor;
    }

    // public修饰的setter方法
    // 返回类型是void，表示没有返回值
    // 方法名是setActor，用于设置actor成员变量的值
    // 参数是String actor，表示要设置的actor值
    public void setActor(String actor) {
        this.actor = actor;
    }
}
